package com.css.fxfzysx.modules.vaomeFacilities.service.impl;

import com.css.fxfzysx.modules.lifeline.param.MajorProjectsParam;
import com.css.fxfzysx.modules.vaomeFacilities.entity.CztMajorProjectsEntity;
import com.css.fxfzysx.modules.vaomeFacilities.param.UpdateMajorProjectsParam;
import com.css.fxfzysx.modules.vaomeFacilities.repository.HeDamageRepository;
import com.css.fxfzysx.modules.vaomeFacilities.service.HeDamageService;
import com.css.fxfzysx.modules.vaomeFacilities.vo.MajorProjectAllVo;
import com.css.fxfzysx.modules.vaomeFacilities.vo.MajorProjectPageVo;
import com.css.fxfzysx.modules.vaomeFacilities.vo.MajorProjectsVo;
import com.css.fxfzysx.util.CreateGson;
import com.css.fxfzysx.util.PlatformDateUtils;
import com.css.fxfzysx.util.PlatformObjectUtils;
import com.css.fxfzysx.util.PlatformSessionUtils;
import com.css.fxfzysx.zcpt.sys.entity.SUser;
import com.css.fxfzysx.zcpt.sys.service.SUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;

@Service
@Slf4j
public class HeDamageServiceImpl implements HeDamageService {

    @Autowired
    private HeDamageRepository heDamageRepository;

    @Autowired
    SUserService userService;

    @Override
    public HashMap<String, Object> page(MajorProjectsParam param, int page, int size) {
        HashMap<String, Object> map = heDamageRepository.page(param, page, size);
        return map;
    }

    @Override
    public MajorProjectPageVo getById(String id) {
        MajorProjectPageVo vo = new MajorProjectPageVo();
        MajorProjectsVo majorProjectsVo = new MajorProjectsVo();
        HashMap<String, Object> map = new HashMap<>();
        CztMajorProjectsEntity entity = heDamageRepository.getById(id);
        if(PlatformObjectUtils.isNotEmpty(entity)){
            BeanUtils.copyProperties(entity,majorProjectsVo);
            if(PlatformObjectUtils.isNotEmpty(entity.getDestructive6State())){
                map.put("6",entity.getDestructive6State());
            }
            if(PlatformObjectUtils.isNotEmpty(entity.getDestructive7State())){
                map.put("7",entity.getDestructive7State());
            }
            if(PlatformObjectUtils.isNotEmpty(entity.getDestructive8State())){
                map.put("8",entity.getDestructive8State());
            }
            if(PlatformObjectUtils.isNotEmpty(entity.getDestructive9State())){
                map.put("9",entity.getDestructive9State());
            }
            if(PlatformObjectUtils.isNotEmpty(entity.getDestructive10State())){
                map.put("10",entity.getDestructive10State());
            }
            if(PlatformObjectUtils.isNotEmpty(entity.getDestructive11State())){
                map.put("11",entity.getDestructive11State());
            }
            if(PlatformObjectUtils.isNotEmpty(entity.getDestructive12State())){
                map.put("12",entity.getDestructive12State());
            }
        }
        vo.setMajorProjectsVo(majorProjectsVo);
        vo.setMap(map);
        return vo;
    }

    @Override
    public void deleteByIds(String ids) {
        for (String id : ids.split(",")) {
            heDamageRepository.deleteById(id);
        }
    }

    @Override
    public void updateById(UpdateMajorProjectsParam param) {
        HashMap<String, Object> map = param.getMap();
        CztMajorProjectsEntity entity = new CztMajorProjectsEntity();
        BeanUtils.copyProperties(param,entity);
        if(PlatformObjectUtils.isNotEmpty(map.get("6"))){
            entity.setDestructive6State(map.get("6").toString());
        }
        if(PlatformObjectUtils.isNotEmpty(map.get("7"))){
            entity.setDestructive7State(map.get("7").toString());
        }
        if(PlatformObjectUtils.isNotEmpty(map.get("8"))){
            entity.setDestructive8State(map.get("8").toString());
        }
        if(PlatformObjectUtils.isNotEmpty(map.get("9"))){
            entity.setDestructive9State(map.get("9").toString());
        }
        if(PlatformObjectUtils.isNotEmpty(map.get("10"))){
            entity.setDestructive10State(map.get("10").toString());
        }
        if(PlatformObjectUtils.isNotEmpty(map.get("11"))){
            entity.setDestructive11State(map.get("11").toString());
        }
        if(PlatformObjectUtils.isNotEmpty(map.get("12"))){
            entity.setDestructive12State(map.get("12").toString());
        }
        entity.setYear(entity.getYear());
        entity.setUpdateTime(PlatformDateUtils.getCurrentTimestamp());
        entity.setUpdateUser(PlatformSessionUtils.getUserId());
        String sUser = userService.getSUser(PlatformSessionUtils.getUserId());
        SUser user = CreateGson.createGson().fromJson(sUser, SUser.class);
        entity.setCreateUserName(user.getUserName());
        heDamageRepository.updateById(entity);
    }

    @Override
    public List<MajorProjectAllVo> getByVersionId(String versionId) {
        return heDamageRepository.getByVersionId(versionId);
    }
}
